package com.lijinjiang.model;

import javax.swing.event.ChangeListener;
import java.time.LocalDateTime;

/**
 * @Description 日期模型接口，<T> 数据类型 (例如 java.time.LocalDate, java.time.LocalDateTime)
 * @Author lijinjiang
 * @Date 2024-12-30 10:52
 */
public interface DateModel<T> {

    boolean isSelected();

    void setSelected(boolean selected);

    T getValue();

    void setValue(LocalDateTime value);

    void setDate(int year, int month, int day);

    int getHundredYear();

    void setHundredYear(int hundredYear);

    void addHundredYear(int hundredYear);

    int getTenYear();

    void setTenYear(int tenYear);

    void addTenYear(int add);

    int getYear();

    void setYear(int year);

    void addYear(int add);

    int getMonth();

    void setMonth(int month);

    void addMonth(int add);

    int getDay();

    void setDay(int day);

    int getHour();

    void setHour(int hour);

    int getMinute();

    void setMinute(int minute);

    int getSecond();

    void setSecond(int second);

    /**
     * 添加一个ChangeListener，当控件的内部状态发生变化时，将通知ChangeListener。这意味着当用户浏览日期时，内部模型会发生变化，每次发生变化时都会触发一个ChangeEvent。
     */
    void addChangeListener(ChangeListener changeListener);

    /**
     * 移除指定的ChangeListener。当选择的日期发生更改时，将通知ChangeListener。
     */
    void removeChangeListener(ChangeListener changeListener);
}